class Solution {
public:
 // 双端队列
    string simplifyPath(string path) {
        deque<string> dq;
        int len = path.size();
        // 将所有目录名放入dq队列
        for(int i = 0; i < len; ){
            if(i < len && path[i] == '/') 
                ++i;
            else{
                string name;  // 目录或文件名
                while(i < len && path[i] != '/') {
                    name += path[i++];
                }
                if(name != "." && name != "..")
                    dq.push_back(name);  
                else if(name == ".." && !dq.empty())
                    dq.pop_back();   // 切换上级目录
            }
        }
        // 将队列中string名字按路径格式存储返回
        string retpath = "/";
        while(!dq.empty()){
            retpath += dq.front()+"/";
            dq.pop_front();   // 队头出
        }
        // 注意，最后一个目录名后面没有斜杠
        if(retpath.size() > 1) retpath.pop_back();

        return retpath;
    }
};